package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.DTO.operate.OperateRenewManageGetDTO;
import com.itlong.cloud.POJO.VO.operate.OperateBusinessOperationLogVO;
import com.itlong.cloud.POJO.VO.operate.OperateRenewManageGetVO;
import com.itlong.cloud.POJO.VO.property.PropertyInvoiceInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-财务续费管理持久层接口
 * </desc>
 *
 * @createDate 2019/08/05
 */
@Mapper
@Repository
public interface IOperateRenewManageDao {

    /**
     * <desc>
     *      分页获取财务续费信息
     * </desc>
     *
     * @param params 查询参数
     * @return 分页财务续费信息
     * @author wangzhi
     * @createDate 2019/08/05
     */
    List<OperateRenewManageGetVO> getPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取财务续费信息总记录数
     * </desc>
     *
     * @param params 查询参数
     * @return 财务续费信息总记录数
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Integer getRecordCount(Map<String, Object> params);

    /**
     * <desc>
     *      获取财务续费信息详情
     * </desc>
     *
     * @param operateRenewManageGetDTO 获取财务续费信息DTO
     * @return 财务续费信息详情
     * @author wangzhi
     * @createDate 2019/08/05
     */
    OperateRenewManageGetVO getOne(OperateRenewManageGetDTO operateRenewManageGetDTO);

    /**
     * <desc>
     *      获取项目云服务管理信息
     * </desc>
     *
     * @param projectId 项目id
     * @return 项目云服务管理信息
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Map<String,Object> getProjectCloudServerManage(@Param("projectId") String projectId);

    /**
     * <desc>
     *      项目云服务管理信息审核修改
     * </desc>
     *
     * @param projectCloudServerManageMap 参数集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Integer updateCloudServerByAccept(Map<String, Object> projectCloudServerManageMap);

    /**
     * <desc>
     *      物业云服务费账单信息审核修改
     * </desc>
     *
     * @param renewOrderMap 参数集
     * @return 受影响行数
     * @author wangzhi
     * @createDate 2019/08/05
     */
    Integer updateCloudServiceOrderByAccept(Map<String, Object> renewOrderMap);

    /**
     * <desc>
     *      获取财务续费信息总金额
     * </desc>
     *
     * @param params 参数集
     * @return 财务续费信息总金额
     * @author wangzhi
     * @createDate 2019/08/07
     */
    String getTotalAmount(Map<String, Object> params);

    /**
     * <desc>
     *      财务续费订单汇款确认
     * </desc>
     *
     * @param renewOrderMap 参数集
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/22
     */
    Integer updateCloudServiceOrderByConfirm(Map<String, Object> renewOrderMap);

    /**
     * <desc>
     *      获取发票信息
     * </desc>
     *
     * @param operateRenewManageGetDTO 发票信息DTO
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/22
     */
    PropertyInvoiceInfoVO getBillInfo(OperateRenewManageGetDTO operateRenewManageGetDTO);

    /**
     * <desc>
     *      开票
     * </desc>
     *
     * @param params 待开发票信息
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/25
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      财务续费订单业务日志
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/27
     */
    List<OperateBusinessOperationLogVO> getLogPage(Map<String ,Object> params);

    /**
     * <desc>
     *      计算日志数量
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/27
     */
    Integer getLogPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      更改开票状态
     * </desc>
     *
     * @param params 参数
     * @return 受影响行数
     * @Author Zhu.yj
     * @createDate  2019/11/28
     */
    Integer updateBillingStatus(Map<String, Object> params);

    /**
     * <desc>
     *      更新开票状态为已开票
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/29
     */
    Integer updateInvoiceByConfirm(Map<String, Object> params);

    /**
     * <desc>
     *      更改订单开票状态
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2019/11/29
     */
    Integer updateCloudServiceOrderBillingStatus(Map<String,Object> params);
}
